package com.estagio.bean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import org.primefaces.context.RequestContext;

import com.estagio.entity.FormaPagamento;
import com.estagio.session.FormaPagamentoSession;

@ManagedBean(name="formaPagamentoBean")
@SessionScoped
public class FormaPagamentoBean {
	
	
	//PAIS
	private FormaPagamento formaPagamento = new FormaPagamento();
	private List<FormaPagamento> listaFormaPagamento = null;
	private String mensagem;
	private FormaPagamento formaPagamentoSelecionado = new FormaPagamento();
	private FormaPagamento formaPagamentoFormaPagamento = new FormaPagamento();
	private DataModel dataModelFormaPagamento;
	private FormaPagamento formaPagamentoSave;
	
	public FormaPagamentoBean() {
	}
	
	//GETTERS AND SETTERS
	
	public FormaPagamento getFormaPagamentoSave() {
		return formaPagamentoSave;
	}

	public void setFormaPagamentoSave(FormaPagamento formaPagamentoSave) {
		this.formaPagamentoSave = formaPagamentoSave;
	}

	public DataModel getDataModelFormaPagamento() {
		return dataModelFormaPagamento;
	}

	public void setDataModelFormaPagamento(DataModel dataModelFormaPagamento) {
		this.dataModelFormaPagamento = dataModelFormaPagamento;
	}

	public FormaPagamento getFormaPagamentoFormaPagamento() {
		return formaPagamentoFormaPagamento;
	}

	public void setFormaPagamentoFormaPagamento(FormaPagamento formaPagamentoFormaPagamento) {
		this.formaPagamentoFormaPagamento = formaPagamentoFormaPagamento;
	}

	public FormaPagamento getFormaPagamentoSelecionado() {
		return formaPagamentoSelecionado;
	}

	public void setFormaPagamentoSelecionado(FormaPagamento formaPagamentoSelecionado) {
		this.formaPagamentoSelecionado = formaPagamentoSelecionado;
	}

	public FormaPagamento getFormaPagamento() {
		return formaPagamento;
	}

	public void setFormaPagamento(FormaPagamento formaPagamento) {
		this.formaPagamento = formaPagamento;
	}

	public List<FormaPagamento> getListaFormaPagamento() {
		return listaFormaPagamento;
	}

	public void setListaFormaPagamento(List<FormaPagamento> listaFormaPagamento) {
		this.listaFormaPagamento = listaFormaPagamento;
	}

	//PAIS

	public void saveEditFormaPagamento() {
		FormaPagamentoSession formaPagamentoRN = new FormaPagamentoSession();
		FormaPagamento formaPagamento = this.formaPagamento;		
		this.mensagem = formaPagamentoRN.save(formaPagamento);

		FacesMessage faces = new FacesMessage(mensagem);
		System.out.println(mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);		
	}	

	public void saveFormaPagamento() {
		RequestContext.getCurrentInstance().update(":formDialog:pgDialogManterFormaPagamento");
		FormaPagamentoSession formaPagamentoRN = new FormaPagamentoSession();
		FormaPagamento formaPagamento = this.formaPagamentoSave;		
		this.mensagem = formaPagamentoRN.save(formaPagamento);
		
		RequestContext.getCurrentInstance().update("dataTableFormaPagamento");
		RequestContext.getCurrentInstance().update("growl");
		
		FacesMessage faces = new FacesMessage(this.mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);		
	}

	public String deleteFormaPagamento() {
		FormaPagamentoSession formaPagamentoRN = new FormaPagamentoSession();		
		FormaPagamento formaPagamento = this.formaPagamentoSave;
		this.mensagem = formaPagamentoRN.delete(formaPagamento);
		System.out.println(this.mensagem);
		this.formaPagamentoSave = new FormaPagamento();
		this.listaFormaPagamento = null;
		RequestContext.getCurrentInstance().update(":formConsultarFormaPagamento:dataTableFormaPagamento");
		FacesMessage faces = new FacesMessage(mensagem);
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);
		return "consultarFormaPagamento";
	}
	
	public DataModel findFormaPagamento() {
		RequestContext.getCurrentInstance().update("panelDialogConsultarFormaPagamento");		
		
		List<FormaPagamento> listaFormaPagamento = new FormaPagamentoSession().find(this.formaPagamento);
		this.dataModelFormaPagamento = new ListDataModel(listaFormaPagamento);
		return this.dataModelFormaPagamento;
	}

	//INVOCAR TELAS
	public String newFormaPagamento() {
		this.formaPagamentoSave = new FormaPagamento();
		return "manterFormaPagamento";
	}
	
	public String consultarFormaPagamento() {
		return "consultarFormaPagamento";
	}


	public String editarFormaPagamento() {
		this.formaPagamentoSave = (FormaPagamento) this.dataModelFormaPagamento.getRowData();
		return "editarFormaPagamento";
	}
	
	public String excluirFormaPagamento() {
		this.formaPagamentoSave = (FormaPagamento) this.dataModelFormaPagamento.getRowData();
		return "excluirFormaPagamento";
	}
	
	
	public void clean() {
		this.listaFormaPagamento = null;
		this.formaPagamento = new FormaPagamento();
	}


	//DIALOGS
	public void openDialogConsultarFormaPagamento() {
		RequestContext.getCurrentInstance().update("idDialogConsultarFormaPagamento");
		RequestContext.getCurrentInstance().execute("dialogConsultarFormaPagamento.show()");
	}
	
	public void openDialogManterFormaPagamento() {
		this.formaPagamentoSave = new FormaPagamento();
		RequestContext.getCurrentInstance().update("idDialogManterFormaPagamento");
		RequestContext.getCurrentInstance().execute("dialogManterFormaPagamento.show()");
	}
}
